/*
* This file is a part of the open-eBackup project.
* This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
* If a copy of the MPL was not distributed with this file, You can obtain one at
* http://mozilla.org/MPL/2.0/.
*
* Copyright (c) [2024] Huawei Technologies Co.,Ltd.
*
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
*/
#ifndef NAS_SHARE_HETRO_BASE_STRUCT_H
#define NAS_SHARE_HETRO_BASE_STRUCT_H

#include "define/Types.h"
#include "nas_share/common/HetroCommonService.h"

struct HetroBaseStruct {

    /* Secondary Storage dataFS Info */
    StorageRepository m_dataFs {};
    std::string m_dataFsSvcIp {};
    std::string m_dataFsPath {};
    std::string m_dataFsLocalMountPath {};

    /* Secondary Storage metaFS Info */
    StorageRepository m_metaFs {};
    std::string m_metaFsSvcIp {};
    std::string m_metaFsPath {};

    /* Secondary Storage cacheFs Info */
    StorageRepository m_cacheFs {};
    std::string m_cacheFsSvcIp {};
    std::string m_cacheFsPath {};
    

    /* protected NAS Host information */
    ProtectedNasHost m_nasHost {};

    /* Protected NAS Share Information */
    ProtectedNasShare m_nasShare {};

    /* Data layout config information */
    HetroDataLayOutNasExtend m_dataLayoutExt {};

    HetroSmbProtectionConfig m_smbProtectionConfig {};

    /* Aggregate config Details */
    HetroBackupAggrExtend m_aggrInfo {};

    /* Last successfull backup copy info saved in backup-copy-meta.json */
    HetroLastCopyDetails m_prevBackupCopyInfo {};

    /* General info about backup job - saved in SharedResource */
    HetroNativeGeneral m_generalInfo {};

    /* Scanner statistics - saved in SharedResource */
    HetroNativeScanStatistics m_scanStats {};

    /* Backup statistics - saved in SharedResource */
    HetroNativeBackupStats m_backupStats {};

    /* JSON file (/m_metaFs/backup-copy-meta.json) where the meta info about the backup copy is stored */
    std::string m_backupCopyMetaFile {};

    /* temproary local mount point to test mounts */
    std::string m_tempLocalMountPath {};

};

#endif